package com.example.demo2udp1;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 目标：完成UDP通信一发一收：服务端开发。
 */
public class UDPServerDemo2 {
    public static void main(String[] args) throws Exception {
        System.out.println("===服务端启动===");
        // 1.创建一个接收端的对象，注册端口
        DatagramSocket socket = new DatagramSocket(8080);

        // 2.创建一个数据包对象，用于封装接收到的数据
        byte[] bytes = new byte[1024 * 64];
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);

        // 3.接收数据,将数据封装到字节数组中去
        socket.receive(packet);

        // 4.解析数据(把字节数组扔给String的构造器即可)
        int len = packet.getLength();  // 获取当前收到的数据长度
        String str = new String(bytes, 0, len);
        System.out.println("服务端收到了：" + str);

        // 获取对方的ip对象和程序端口
        String ip = packet.getAddress().getHostAddress();
        int port = packet.getPort();
        System.out.println("对方ip：" + ip + "   对方端口：" + port);

        // 5.释放资源
        socket.close();
    }
}
